package br.com.controleVendas.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.ForeignKey;

@SuppressWarnings("deprecation")
@Entity
@Table(name = "cliente")
public class Cliente extends GenericEntity<Cliente>
{

    private static final long serialVersionUID = 7139677152100665932L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "cd_id")
    private Long              cdId;

    @Column(name = "nm_cliente", length = 150, nullable = false)
    private String            nmCliente;

    @Column(name = "nr_cpf", length = 15)
    private String            nrCpf;

    @Column(name = "nr_cnpj", length = 30)
    private String            nrCnpj;

    @Column(name = "nr_rg", length = 30)
    private String            nrRg;

    @Column(name = "ds_rua", length = 500)
    private String            dsRua;

    @Column(name = "nr_endereco", length = 10)
    private String            nrEndereco;

    @Column(name = "ds_complemento", length = 255)
    private String            dsComplemento;

    @Column(name = "nr_telefone_celular", length = 15)
    private String            nrTelefoneCelular;

    @Column(name = "nr_telefone_residencial", length = 15)
    private String            nrTelefoneResidencial;

    @Column(name = "fl_ativo")
    private Boolean           flAtivo;

    @ManyToOne
    @JoinColumn(name = "fk_estado", referencedColumnName = "cd_id")
    @ForeignKey(name = "fk_cliente_estado")
    private Estado            estado;

    @ManyToOne
    @JoinColumn(name = "fk_cidade", referencedColumnName = "cd_id")
    @ForeignKey(name = "fk_cliente_cidade")
    private Cidade            cidade;

    @Override
    public String getNmEntity()
    {
        return "Cliente";
    }

    public String getNmCliente()
    {
        return nmCliente;
    }

    public void setNmCliente(String nmCliente)
    {
        this.nmCliente = nmCliente;
    }

    public String getNrCpf()
    {
        return nrCpf;
    }

    public void setNrCpf(String nrCpf)
    {
        this.nrCpf = nrCpf;
    }

    public String getNrCnpj()
    {
        return nrCnpj;
    }

    public void setNrCnpj(String nrCnpj)
    {
        this.nrCnpj = nrCnpj;
    }

    public String getNrRg()
    {
        return nrRg;
    }

    public void setNrRg(String nrRg)
    {
        this.nrRg = nrRg;
    }

    public String getDsRua()
    {
        return dsRua;
    }

    public void setDsRua(String dsRua)
    {
        this.dsRua = dsRua;
    }

    public String getNrEndereco()
    {
        return nrEndereco;
    }

    public void setNrEndereco(String nrEndereco)
    {
        this.nrEndereco = nrEndereco;
    }

    public String getDsComplemento()
    {
        return dsComplemento;
    }

    public void setDsComplemento(String dsComplemento)
    {
        this.dsComplemento = dsComplemento;
    }

    public String getNrTelefoneCelular()
    {
        return nrTelefoneCelular;
    }

    public void setNrTelefoneCelular(String nrTelefoneCelular)
    {
        this.nrTelefoneCelular = nrTelefoneCelular;
    }

    public String getNrTelefoneResidencial()
    {
        return nrTelefoneResidencial;
    }

    public void setNrTelefoneResidencial(String nrTelefoneResidencial)
    {
        this.nrTelefoneResidencial = nrTelefoneResidencial;
    }

    public Long getCdId()
    {
        return cdId;
    }

    public void setCdId(Long cdId)
    {
        this.cdId = cdId;
    }

    public Boolean getFlAtivo()
    {
        return flAtivo;
    }

    public void setFlAtivo(Boolean flAtivo)
    {
        this.flAtivo = flAtivo;
    }

    public Estado getEstado()
    {
        return estado;
    }

    public void setEstado(Estado estado)
    {
        this.estado = estado;
    }

    public Cidade getCidade()
    {
        return cidade;
    }

    public void setCidade(Cidade cidade)
    {
        this.cidade = cidade;
    }

}
